/**
 * Copyright(c) 2014 Xunton Solutions
 *
 * History:
 *   15-9-22 下午5:45 Created by dwzhang
 */
package com.jade.bss.weixin.api.pay.protocol;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import com.jade.bss.weixin.api.protocol.xml.Response;

/**
 * 通知请求。包含相应的基础参数。
 *
 * @author <a href="mailto:dwzhang@xunton.com">dwzhang</a> 
 * @version 1.0 15-9-22 下午5:45
 */
@XmlRootElement (name = "xml")
@XmlAccessorType (XmlAccessType.FIELD)
public class NotifyRequest extends Response
{
    //微信支付分配的终端设备号
    @XmlElement (name = "device_info")
    private String deviceInfo;
    //用户在商户appid下的唯一标识
    @XmlElement (name = "openid")
    private String openId;
    //用户是否关注公众账号，Y-关注，N-未关注，仅在公众账号类型支付有效
    @XmlElement (name = "is_subscribe")
    private String isSubscribe;
    //调用接口提交的交易类型
    @XmlElement (name = "trade_type")
    private String tradeType;
    //SUCCESS—支付成功
    //REFUND—转入退款
    //NOTPAY—未支付
    //CLOSED—已关闭
    //REVOKED—已撤销（刷卡支付）
    //USERPAYING--用户支付中
    //PAYERROR--支付失败(其他原因，如银行返回失败)
    @XmlElement (name = "trade_state")
    private String tradeState;
    //银行类型，采用字符串类型的银行标识
    @XmlElement (name = "bank_type")
    private String bankType;
    //订单总金额，单位为分
    @XmlElement (name = "total_fee")
    private int totalFee;
    //现金支付金额订单现金支付金额
    @XmlElement (name = "fee_type")
    private String feeType;
    //货币类型
    @XmlElement (name = "cash_fee")
    private int cashFee;
    //货币类型
    @XmlElement (name = "cash_fee_type")
    private String cashFeeType;
    //代金券或立减优惠”金额<=订单总金额，订单总金额-“代金券或立减优惠”金额=现金支付金额
    @XmlElement (name = "coupon_fee")
    private int couponFee;
    //代金券或立减优惠使用数量
    @XmlElement (name = "coupon_count")
    private int couponCount;
    //代金券或立减优惠ID, $n为下标，从0开始编号
    @XmlElement (name = "coupon_id_0")
    private String couponId0;
    //单个代金券或立减优惠支付金额, $n为下标，从0开始编号
    @XmlElement (name = "coupon_fee_0")
    private int couponFee0;
    //微信支付订单号
    @XmlElement (name = "transaction_id")
    private String transactionId;
    //商户系统的订单号，与请求一致。
    @XmlElement (name = "out_trade_no")
    private String outTradeNo;
    //附加数据，原样返回
    @XmlElement (name = "attach")
    private String attach;
    //订单支付时间，格式为yyyyMMddHHmmss
    @XmlElement (name = "time_end")
    private String timeEnd;

    public String getDeviceInfo()
    {
        return deviceInfo;
    }

    public void setDeviceInfo(String deviceInfo)
    {
        this.deviceInfo = deviceInfo;
    }

    public String getOpenId()
    {
        return openId;
    }

    public void setOpenId(String openId)
    {
        this.openId = openId;
    }

    public String getSubscribe()
    {
        return isSubscribe;
    }

    public void setSubscribe(String subscribe)
    {
        isSubscribe = subscribe;
    }

    public String getTradeType()
    {
        return tradeType;
    }

    public void setTradeType(String tradeType)
    {
        this.tradeType = tradeType;
    }

    public String getTradeState()
    {
        return tradeState;
    }

    public void setTradeState(String tradeState)
    {
        this.tradeState = tradeState;
    }

    public String getBankType()
    {
        return bankType;
    }

    public void setBankType(String bankType)
    {
        this.bankType = bankType;
    }

    public int getTotalFee()
    {
        return totalFee;
    }

    public void setTotalFee(int totalFee)
    {
        this.totalFee = totalFee;
    }

    public String getFeeType()
    {
        return feeType;
    }

    public void setFeeType(String feeType)
    {
        this.feeType = feeType;
    }

    public int getCashFee()
    {
        return cashFee;
    }

    public void setCashFee(int cashFee)
    {
        this.cashFee = cashFee;
    }

    public String getCashFeeType()
    {
        return cashFeeType;
    }

    public void setCashFeeType(String cashFeeType)
    {
        this.cashFeeType = cashFeeType;
    }

    public int getCouponFee()
    {
        return couponFee;
    }

    public void setCouponFee(int couponFee)
    {
        this.couponFee = couponFee;
    }

    public int getCouponCount()
    {
        return couponCount;
    }

    public void setCouponCount(int couponCount)
    {
        this.couponCount = couponCount;
    }

    public String getCouponId0()
    {
        return couponId0;
    }

    public void setCouponId0(String couponId0)
    {
        this.couponId0 = couponId0;
    }

    public int getCouponFee0()
    {
        return couponFee0;
    }

    public void setCouponFee0(int couponFee0)
    {
        this.couponFee0 = couponFee0;
    }

    public String getTransactionId()
    {
        return transactionId;
    }

    public void setTransactionId(String transactionId)
    {
        this.transactionId = transactionId;
    }

    public String getOutTradeNo()
    {
        return outTradeNo;
    }

    public void setOutTradeNo(String outTradeNo)
    {
        this.outTradeNo = outTradeNo;
    }

    public String getAttach()
    {
        return attach;
    }

    public void setAttach(String attach)
    {
        this.attach = attach;
    }

    public String getTimeEnd()
    {
        return timeEnd;
    }

    public void setTimeEnd(String timeEnd)
    {
        this.timeEnd = timeEnd;
    }

}
